[INFO] cloning repository https://github.com/roberto-casas/pennytrading-bot
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/roberto-casas/pennytrading-bot" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Froberto-casas%2Fpennytrading-bot", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Froberto-casas%2Fpennytrading-bot'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a1093cad7734238be5218f01edc6c652cf35cf91
[INFO] checking roberto-casas/pennytrading-bot against 40527f3e444fde1deb361751bdef9b9e11d1b971+rustflags=--cfg crater_hack --force-warn invalid-c-variadic-arguments for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Froberto-casas%2Fpennytrading-bot" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/roberto-casas/pennytrading-bot
[INFO] finished tweaking git repo https://github.com/roberto-casas/pennytrading-bot
[INFO] tweaked toml for git repo https://github.com/roberto-casas/pennytrading-bot written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/roberto-casas/pennytrading-bot on toolchain 40527f3e444fde1deb361751bdef9b9e11d1b971
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+40527f3e444fde1deb361751bdef9b9e11d1b971" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/roberto-casas/pennytrading-bot already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+40527f3e444fde1deb361751bdef9b9e11d1b971" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249
[INFO] running `Command { std: "docker" "start" "983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249" "/opt/rustwide/cargo-home/bin/cargo" "+40527f3e444fde1deb361751bdef9b9e11d1b971" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid --cfg crater_hack --force-warn invalid-c-variadic-arguments" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249" "/opt/rustwide/cargo-home/bin/cargo" "+40527f3e444fde1deb361751bdef9b9e11d1b971" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking unsafe-libyaml v0.2.11
[INFO] [stderr]     Checking tempfile v3.26.0
[INFO] [stderr]     Checking compact_str v0.7.1
[INFO] [stderr]     Checking rustls-native-certs v0.7.3
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling stability v0.2.1
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking rustls-webpki v0.102.8
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking ratatui v0.26.3
[INFO] [stderr]     Checking clap v4.5.60
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-rustls v0.25.0
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking pennytrading-bot v0.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: fields `full_fraction`, `adjusted_fraction`, and `edge` are never read
[INFO] [stdout]   --> tests/../src/kelly.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct BetResult {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 56 |     /// Full (unconstrained) Kelly fraction.
[INFO] [stdout] 57 |     pub full_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 58 |     /// Fraction after applying the Kelly multiplier and position cap.
[INFO] [stdout] 59 |     pub adjusted_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub edge: f64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BetResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_open` is never used
[INFO] [stdout]   --> tests/../src/models.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl TradeStatus {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn is_open(self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `spread_pct` is never used
[INFO] [stdout]    --> tests/../src/models.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl OrderBook {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn spread_pct(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `end_datetime`, `seconds_to_resolution`, `is_near_resolution`, and `label` are never used
[INFO] [stdout]    --> tests/../src/models.rs:211:12
[INFO] [stdout]     |
[INFO] [stdout] 210 | impl Market {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 211 |     pub fn end_datetime(&self) -> anyhow::Result<DateTime<Utc>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn seconds_to_resolution(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn is_near_resolution(&self, fraction: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn label(&self) -> String {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unrealised_pnl`, `should_stop_loss`, `should_take_profit`, and `update_trailing_stop` are never used
[INFO] [stdout]    --> tests/../src/models.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl Position {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] 271 |     pub fn unrealised_pnl(&self, current_price: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn should_stop_loss(&self, current_price: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn should_take_profit(&self, current_price: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn update_trailing_stop(&mut self, current_price: f64, trail_pct: f64) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppState` is never constructed
[INFO] [stdout]    --> tests/../src/models.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 | pub struct AppState {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_log` is never used
[INFO] [stdout]    --> tests/../src/models.rs:392:12
[INFO] [stdout]     |
[INFO] [stdout] 391 | impl AppState {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 392 |     pub fn add_log(&mut self, msg: impl Into<String>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `full_fraction`, `adjusted_fraction`, and `edge` are never read
[INFO] [stdout]   --> tests/../src/kelly.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct BetResult {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 56 |     /// Full (unconstrained) Kelly fraction.
[INFO] [stdout] 57 |     pub full_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 58 |     /// Fraction after applying the Kelly multiplier and position cap.
[INFO] [stdout] 59 |     pub adjusted_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub edge: f64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BetResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `full_fraction` and `adjusted_fraction` are never read
[INFO] [stdout]   --> tests/../src/kelly.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct BetResult {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 56 |     /// Full (unconstrained) Kelly fraction.
[INFO] [stdout] 57 |     pub full_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 58 |     /// Fraction after applying the Kelly multiplier and position cap.
[INFO] [stdout] 59 |     pub adjusted_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BetResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_open` is never used
[INFO] [stdout]   --> tests/../src/models.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl TradeStatus {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn is_open(self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unrealised_pnl`, `should_stop_loss`, and `should_take_profit` are never used
[INFO] [stdout]    --> tests/../src/models.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl Position {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] 271 |     pub fn unrealised_pnl(&self, current_price: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn should_stop_loss(&self, current_price: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn should_take_profit(&self, current_price: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeDiagnostics` is never constructed
[INFO] [stdout]    --> tests/../src/models.rs:307:12
[INFO] [stdout]     |
[INFO] [stdout] 307 | pub struct TradeDiagnostics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `avg_edge` and `model_edge_hit_rate` are never read
[INFO] [stdout]    --> tests/../src/models.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 327 | pub struct CalibrationStats {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 331 |     pub avg_edge: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 332 |     pub model_edge_hit_rate: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CalibrationStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResolvedTradeSample` is never constructed
[INFO] [stdout]    --> tests/../src/models.rs:336:12
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub struct ResolvedTradeSample {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BotSession` is never constructed
[INFO] [stdout]    --> tests/../src/models.rs:354:12
[INFO] [stdout]     |
[INFO] [stdout] 354 | pub struct BotSession {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppState` is never constructed
[INFO] [stdout]    --> tests/../src/models.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 | pub struct AppState {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_log` is never used
[INFO] [stdout]    --> tests/../src/models.rs:392:12
[INFO] [stdout]     |
[INFO] [stdout] 391 | impl AppState {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 392 |     pub fn add_log(&mut self, msg: impl Into<String>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load` and `has_credentials` are never used
[INFO] [stdout]    --> tests/../src/config.rs:394:12
[INFO] [stdout]     |
[INFO] [stdout] 392 | impl Settings {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 393 |     /// Load settings from *config_path* YAML file, then overlay env vars.
[INFO] [stdout] 394 |     pub fn load(config_path: &str, dry_run_override: Option<bool>) -> Result<Self> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn has_credentials(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> tests/../src/strategy.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Signal {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 25 |     pub market: Market,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 26 |     pub side: Side,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 27 |     pub token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 28 |     /// The price at which we want to enter (limit order price or best ask).
[INFO] [stdout] 29 |     pub entry_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub p_model: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 35 |     /// Market-implied probability (best bid or ask depending on side).
[INFO] [stdout] 36 |     pub p_market: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 37 |     /// Composite regime bucket at signal time (`vol|spread|liquidity|event`).
[INFO] [stdout] 38 |     pub regime: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Signal` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `score` is never used
[INFO] [stdout]   --> tests/../src/strategy.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl Signal {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 42 |     /// Rank opportunities by expected edge weighted by size.
[INFO] [stdout] 43 |     pub fn score(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `set_external_event_state`, `update_spots`, `update_spots_from_books`, and `count_per_asset` are never used
[INFO] [stdout]    --> tests/../src/strategy.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Strategy {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn set_external_event_state(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub fn update_spots(&mut self, btc: f64, eth: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 388 |     pub fn update_spots_from_books(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn count_per_asset(open_positions: &[(String, usize)], asset: &str) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `train_size`, `test_size`, `edge_threshold`, and `train_pnl_usdc` are never read
[INFO] [stdout]   --> src/analytics.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct WalkForwardFold {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout]  7 |     pub train_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]  8 |     pub test_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]  9 |     pub edge_threshold: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub train_pnl_usdc: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WalkForwardFold` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `get_sessions`, `row_to_session`, `get_active_markets`, `save_orderbook_snapshot`, and `get_all_positions` are never used
[INFO] [stdout]    --> src/database.rs:174:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Database {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn get_sessions(&self, limit: usize) -> Result<Vec<BotSession>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     fn row_to_session(row: &rusqlite::Row<'_>) -> Result<BotSession, rusqlite::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn get_active_markets(&self) -> Result<Vec<Market>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn save_orderbook_snapshot(&self, book: &OrderBook) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn get_all_positions(&self, limit: usize) -> Result<Vec<Position>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `full_fraction` and `adjusted_fraction` are never read
[INFO] [stdout]   --> src/kelly.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct BetResult {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 56 |     /// Full (unconstrained) Kelly fraction.
[INFO] [stdout] 57 |     pub full_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 58 |     /// Fraction after applying the Kelly multiplier and position cap.
[INFO] [stdout] 59 |     pub adjusted_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BetResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `market_id` is never read
[INFO] [stdout]   --> src/polymarket.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct BookUpdate {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 60 |     pub token_id: String,
[INFO] [stdout] 61 |     pub market_id: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BookUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fetch_order_book` and `cancel_order` are never used
[INFO] [stdout]    --> src/polymarket.rs:210:18
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl PolymarketClient {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub async fn fetch_order_book(&self, token_id: &str, market_id: &str) -> Option<OrderBook> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub async fn cancel_order(&self, order_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `update_spots` and `count_per_asset` are never used
[INFO] [stdout]    --> src/strategy.rs:374:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Strategy {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub fn update_spots(&mut self, btc: f64, eth: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn count_per_asset(open_positions: &[(String, usize)], asset: &str) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `train_size`, `test_size`, `edge_threshold`, and `train_pnl_usdc` are never read
[INFO] [stdout]   --> src/analytics.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct WalkForwardFold {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout]  7 |     pub train_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]  8 |     pub test_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]  9 |     pub edge_threshold: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub train_pnl_usdc: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WalkForwardFold` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `get_sessions`, `row_to_session`, `get_active_markets`, `save_orderbook_snapshot`, and `get_all_positions` are never used
[INFO] [stdout]    --> src/database.rs:174:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Database {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn get_sessions(&self, limit: usize) -> Result<Vec<BotSession>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     fn row_to_session(row: &rusqlite::Row<'_>) -> Result<BotSession, rusqlite::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn get_active_markets(&self) -> Result<Vec<Market>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn save_orderbook_snapshot(&self, book: &OrderBook) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn get_all_positions(&self, limit: usize) -> Result<Vec<Position>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `full_fraction` and `adjusted_fraction` are never read
[INFO] [stdout]   --> src/kelly.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct BetResult {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 56 |     /// Full (unconstrained) Kelly fraction.
[INFO] [stdout] 57 |     pub full_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 58 |     /// Fraction after applying the Kelly multiplier and position cap.
[INFO] [stdout] 59 |     pub adjusted_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BetResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `market_id` is never read
[INFO] [stdout]   --> src/polymarket.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct BookUpdate {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 60 |     pub token_id: String,
[INFO] [stdout] 61 |     pub market_id: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BookUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fetch_order_book` and `cancel_order` are never used
[INFO] [stdout]    --> src/polymarket.rs:210:18
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl PolymarketClient {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub async fn fetch_order_book(&self, token_id: &str, market_id: &str) -> Option<OrderBook> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub async fn cancel_order(&self, order_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `update_spots` and `count_per_asset` are never used
[INFO] [stdout]    --> src/strategy.rs:374:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Strategy {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub fn update_spots(&mut self, btc: f64, eth: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn count_per_asset(open_positions: &[(String, usize)], asset: &str) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `tokio-stream`
[INFO] [stderr]   --> Cargo.toml:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | tokio-stream = "0.1"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `tokio-stream`
[INFO] [stderr] warning: `pennytrading-bot` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.24s
[INFO] running `Command { std: "docker" "inspect" "983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249", kill_on_drop: false }`
[INFO] [stdout] 983c36e5cc9627cc96fb6669919ab12373ffb0c42c6d7f9c1413874345863249
